// 左树不为空+(  递归左树
// 左树为空-右树为空  -->什么都不做
// 右树不为空+(
// 左树不为空-右树为空--->什么都不做
// 左树为空-右树不为空+()
// 递归完回来 +  )


import demo.BinaryTree;

class TreeNode{
    public int val;
    public TreeNode left;
    public TreeNode right;
    public TreeNode(int val){
        this.val =val;
    }
}
class Solution6 {

    public void treeStrChild(StringBuilder sb,TreeNode root){
          sb.append(root.val);
          if(root.left!=null){
              sb.append("(");
              treeStrChild(sb,root.left);
              sb.append(")");
          }else {
              if(root.right==null){
                  //左为空右为空什么也不做
                  return ;
              }else {
                  //左树为空右树不为空
                  sb.append("()");
              }
          }

          if(root.right!=null){
              sb.append("(");
              treeStrChild(sb,root.right);
              sb.append(")");
          }else {
              if(root.left==null){
                  //左为空右为空什么也不做
                  return ;
              }else {
                  //左树不为空右树为空什么也不做
                  return;
              }
          }
    }

    public String tree2str(TreeNode root) {
         StringBuilder sb = new StringBuilder();
         treeStrChild(sb,root);
         return sb.toString();
    }

    public static void main(String[] args) {
        //Solution5 solution5 = new Solution5();
        //solution5.tree2str();
    }
}